﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace uacars
{

    public partial class frmOfertas : Form
    {
        private ENLibraryClass.ENOfertas ENOfertas1;
        public frmOfertas()
        {
            this.DoubleBuffered = true;
            InitializeComponent();
        }

        private void frmOfertas_Load(object sender, EventArgs e)
        {
            ENLibraryClass.ENOfertas oferta = new ENLibraryClass.ENOfertas();
            DataTable table = oferta.BuscarOfertas();
            dvgofertas.DataSource = table;
            Modificar.Enabled = false;
            Borrar.Enabled = false;
            Fechaini.Value = DateTime.Parse("01/01/1900");
            Fechafin.Value = DateTime.Parse("01/01/1900");
        }

        private void edicionToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void borrarClienteToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void ayudaToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void Nuevo_Click(object sender, EventArgs e)
        {
            if (number1.Value == 0 && DiasG.Value == 0 && TextDescripcion.Text == "")
            {
                MessageBox.Show("Debe insertar un descuento, unos dias gratis o una descripción", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (this.Fechafin.Value.CompareTo(this.Fechaini.Value) == -1)
                {
                    MessageBox.Show("La fecha final no puede ser menor que inicial", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    DataTable buscar = new DataTable();
                    int desc = (int)number1.Value;
                    int dia = (int)DiasG.Value;
                    string ofer = "Oferta creada";
                    int id = (int)TextID.Value;
                    int vehiculo = (int)IDVehiculo.Value;
                    int cliente = (int)TextCliente.Value;
                    int gratis = (int)DiasG.Value;
                    string ch;
                    if (Chofer.Checked == true)
                    {
                        ch = "SI";
                    }
                    else
                    {
                        ch = "NO";
                    }
                    ENLibraryClass.ENIdSiguiente idsiguiente = new ENLibraryClass.ENIdSiguiente("ofertas", 0);
                    int idoferta = idsiguiente.BuscarIdSiguiente();
                    ENOfertas1 = new ENLibraryClass.ENOfertas(idoferta, vehiculo, cliente, ch, TextDescripcion.Text, Fechaini.Value, Fechafin.Value, desc, gratis);
                    ENOfertas1.AltaOferta();
                    idsiguiente.ActualizarIdSiguiente();
                    label.Text = ofer;
                    DataTable table = ENOfertas1.BuscarOfertas();
                    dvgofertas.DataSource = table;
                    Borrar.Enabled = false;
                    Modificar.Enabled = false;
                }
            }
        }        

        private void Borrar_Click(object sender, EventArgs e)
        {
            int num = (int)TextID.Value;
            if (TextID.Value == 0 && number1.Value == 0 && TextCliente.Value == 0 && IDVehiculo.Value == 0)
            {
                MessageBox.Show("Debe insertar algun campo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (this.Fechafin.Value.Date.CompareTo(this.Fechaini.Value.Date) == -1)
                {

                    MessageBox.Show("La fecha final no puede ser menor que inicial", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    ENOfertas1 = new ENLibraryClass.ENOfertas(num, 0, 0, null, null, DateTime.Parse("01/01/1900"), DateTime.Parse("01/01/1900"),0,0);
                    ENOfertas1.BorrarOferta();
                    label.Text = "Oferta borrada";
                    DataTable table = ENOfertas1.BuscarOfertas();
                    dvgofertas.DataSource = table;
                    Borrar.Enabled = false;
                    Modificar.Enabled = false;
                }
            }
        }

        private void Modificar_Click(object sender, EventArgs e)
        {
            if (TextID.Value == 0 && number1.Value == 0 && TextCliente.Value == 0 && IDVehiculo.Value == 0)
            {
                MessageBox.Show("Debe insertar algun campo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                if (TextID.Value == 0)
                {
                    MessageBox.Show("Debe insertar el ID de la oferta a modificar", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    if (this.Fechafin.Value.CompareTo(this.Fechaini.Value) == -1)
                    {

                        MessageBox.Show("La fecha final no puede ser menor que inicial", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        int id = (int) TextID.Value;
                        int idv = (int) IDVehiculo.Value;
                        int idcli = (int) TextCliente.Value;
                        int desc = (int) number1.Value;
                        int dias = (int) DiasG.Value;
                        string ch;
                        if (Chofer.Checked == true)
                        {
                            ch = "SI";
                        }
                        else
                        {
                            ch = "NO";
                        }
                        ENOfertas1 = new ENLibraryClass.ENOfertas(id, idv, idcli, ch, TextDescripcion.Text, Fechaini.Value.Date, Fechafin.Value.Date, desc, dias);
                        ENOfertas1.ModificarOferta();
                        DataTable table = ENOfertas1.BuscarOfertas();
                        dvgofertas.DataSource = table;

                        label.Text = "Oferta modificada";
                        Borrar.Enabled = false;
                        Modificar.Enabled = false;
                    }
                }
            }
        }

        private void Fechafin_ValueChanged(object sender, EventArgs e)
        {
            if (this.Fechafin.Value.Date.CompareTo(this.Fechaini.Value.Date) == -1)
            {
                MessageBox.Show("La fecha final no puede ser menor que inicial", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void Buscar_Click(object sender, EventArgs e)
        {
            Modificar.Enabled = true;
            Borrar.Enabled = true;
            if (TextID.Value == 0 && TextDescripcion.Text == "" && IDVehiculo.Value == 0 && TextCliente.Value == 0 && Chofer.Checked == false)
            {
                ENLibraryClass.ENOfertas oferta = new ENLibraryClass.ENOfertas();
                DataTable table = oferta.BuscarOfertas();
                dvgofertas.DataSource = table;
            }
            else
            {
                try
                {
                    int id = (int)TextID.Value;
                    int vehiculo = (int)IDVehiculo.Value;
                    int cliente = (int)TextCliente.Value;
                    int desc = (int)number1.Value;
                    int gratis = (int)DiasG.Value;
                    string ch;
                    if (Chofer.Checked==true)
                    {
                        ch = "SI";
                    }
                    else
                    {
                        ch = "NO";
                    }
                    ENLibraryClass.ENOfertas buscado = new ENLibraryClass.ENOfertas(id, vehiculo, cliente, ch, TextDescripcion.Text, Fechaini.Value, Fechafin.Value, desc, gratis);
                    DataTable table = buscado.BuscarOfertasPor();
                    dvgofertas.DataSource = table;
                }
                catch
                {
                    MessageBox.Show("Error al buscar la oferta.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                }
                
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            LimpiarCampos();
        }

        public void LimpiarCampos()
        {
            label.Text = null;
            TextID.Value = 0;
            IDVehiculo.Value = 0;
            TextDescripcion.Text = "";
            TextCliente.Value = 0;
            Fechaini.Checked = false;
            Fechafin.Checked = false;
            number1.Value = 0;
            DiasG.Value = 0;
            Chofer.Checked = false;
        }

        private void Fechaini_ValueChanged(object sender, EventArgs e)
        {
        }

        

        private void dvgofertas_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            Borrar.Enabled = true;
            Modificar.Enabled = true;
            dvgofertas.CurrentRow.Selected = true;
            TextID.Text = dvgofertas.Rows[dvgofertas.CurrentCell.RowIndex].Cells["id"].Value.ToString();


            TextCliente.Text = dvgofertas.Rows[dvgofertas.CurrentCell.RowIndex].Cells["cliente"].Value.ToString();
            TextDescripcion.Text = dvgofertas.Rows[dvgofertas.CurrentCell.RowIndex].Cells["descripcion"].Value.ToString();
            IDVehiculo.Text = dvgofertas.Rows[dvgofertas.CurrentCell.RowIndex].Cells["vehiculo"].Value.ToString();

            Fechaini.Value = (DateTime)(TypeDescriptor.GetConverter(new DateTime(1990, 5, 6)).ConvertFrom(dvgofertas.Rows[dvgofertas.CurrentCell.RowIndex].Cells["fechainicio"].Value.ToString()));
            if (dvgofertas.Rows[dvgofertas.CurrentCell.RowIndex].Cells["fechafin"].Value.ToString() != "")
                Fechafin.Value = (DateTime)(TypeDescriptor.GetConverter(new DateTime(1990, 5, 6)).ConvertFrom(dvgofertas.Rows[dvgofertas.CurrentCell.RowIndex].Cells["fechafin"].Value.ToString()));

            number1.Text = dvgofertas.Rows[dvgofertas.CurrentCell.RowIndex].Cells["porcentaje"].Value.ToString();
            DiasG.Text = dvgofertas.Rows[dvgofertas.CurrentCell.RowIndex].Cells["diasgratis"].Value.ToString();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            frmClientes cliente = new frmClientes("");
            cliente.MdiParent = this.MdiParent;
            cliente.Show();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            frmVehiculos cliente = new frmVehiculos();
            cliente.MdiParent = this.MdiParent;
            cliente.Show();
        }

        private void buttonImprimir_Click(object sender, EventArgs e)
        {
            frmImprimir Imprimir = new frmImprimir(dvgofertas, "OFERTAS");
            Imprimir.Show();
        }

        private void buttonImprimir_Click_1(object sender, EventArgs e)
        {
            frmImprimir Imprimir = new frmImprimir(dvgofertas, "OFERTAS");
            Imprimir.Show();
        }

        private void buttonXML_Click(object sender, EventArgs e)
        {
            ExportarXML();
        }

        private void buttonPDF_Click(object sender, EventArgs e)
        {
            PDF pdf = new PDF();
            pdf.generarPDF("frmOfertas", saveFileDialog1, dvgofertas);
        }

        public void ExportarXML()
        {
            saveFileDialog1.FileName = "UACARS ofertas.xml";
            saveFileDialog1.Filter = "Archivo XML|*.xml";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string path = saveFileDialog1.FileName;
                int numFilas = 0;

                numFilas = dvgofertas.Rows.Count;

                DataSet ds = new DataSet("Clientes");
                DataTable dt = new DataTable("Cliente");

                dt.Columns.Add("id", Type.GetType("System.String"));

                dt.Columns.Add("cliente", Type.GetType("System.String"));

                dt.Columns.Add("vehiculo", Type.GetType("System.String"));

                dt.Columns.Add("chofer", Type.GetType("System.String"));

                dt.Columns.Add("fechainicio", Type.GetType("System.String"));

                dt.Columns.Add("fechafin", Type.GetType("System.String"));

                dt.Columns.Add("porcentaje", Type.GetType("System.String"));

                dt.Columns.Add("diasgratis", Type.GetType("System.String"));

                dt.Columns.Add("descripcion", Type.GetType("System.String"));

                if (numFilas > 0)
                {
                    for (int i = 0; i < numFilas; i++)
                    {
                        DataRow dr;
                        dr = dt.NewRow();

                        dr.BeginEdit();

                        dr["id"] = dvgofertas[0, i].Value.ToString();

                        dr["cliente"] = dvgofertas[1, i].Value.ToString();

                        dr["vehiculo"] = dvgofertas[2, i].Value.ToString();

                        dr["chofer"] = dvgofertas[3, i].Value.ToString();

                        dr["fechainicio"] = dvgofertas[4, i].Value.ToString();

                        dr["fechafin"] = dvgofertas[5, i].Value.ToString();

                        dr["porcentaje"] = dvgofertas[6, i].Value.ToString();

                        dr["diasgratis"] = dvgofertas[7, i].Value.ToString();

                        dr["descripcion"] = dvgofertas[8, i].Value.ToString();

                        dr.EndEdit();

                        dt.Rows.Add(dr);
                    }
                }
                ds.Tables.Add(dt);
                ds.WriteXml(path);
            }
        }

        public void ImportarXML()
        {
            DataSet dataSet1 = new DataSet();
            openFileDialog1.FileName = "";
            openFileDialog1.Filter = "Archivo XML|*.xml";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string file = openFileDialog1.FileName;

                if (file.Length > 0)
                {
                    try
                    {
                        dataSet1.ReadXml(file);

                        DataGridView aux = new DataGridView();
                        dvgofertas.DataSource = aux.DataSource;
                        dvgofertas.DataMember = "";

                        dvgofertas.DataSource = dataSet1;
                        dvgofertas.DataMember = "oferta";

                        System.IO.StringWriter swXML = new System.IO.StringWriter();
                        dataSet1.WriteXmlSchema(swXML);
                    }

                    catch (System.Security.SecurityException ex)
                    {
                        MessageBox.Show("Error al acceder al fichero," + ex.Message, "Error de fichero", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                    }
                }
            }
        }

        private void buttonExcel_Click(object sender, EventArgs e)
        {
            Excel();
        }

        public void Excel()
        {
            XML xml = new XML();
            xml.ExportarExcel(dvgofertas);
        }
    }
}
